/**
 * npm包统一配置入口
 * 根据模块引用规范，使用统一配置入口导出npm模块
 */

// 导入路径解析器
const pathResolver = require('./path_resolver.js');

// MobX核心库
const mobx = require('../../../miniprogram_npm/mobx-miniprogram/index');
exports.mobx = mobx;

// 使用try-catch提供更好的错误处理
let mobxBindings;
try {
  // 尝试导入MobX绑定模块 - 修正路径
  mobxBindings = require('../../../miniprogram_npm/mobx-miniprogram-bindings/index');
  console.log('成功导入mobx-miniprogram-bindings');
} catch (e) {
  console.error('导入mobx-miniprogram-bindings失败，提供备用实现', e);
  // 提供一个简单的备用实现
  mobxBindings = {
    createStoreBindings: function(page, options) {
      console.warn('使用了备用的createStoreBindings实现');
      const { store, fields, actions } = options;
      
      // 绑定字段
      if (fields && Array.isArray(fields)) {
        fields.forEach(field => {
          page.data[field] = store[field];
        });
      }
      
      // 绑定方法
      if (actions && Array.isArray(actions)) {
        actions.forEach(action => {
          page[action] = store[action].bind(store);
        });
      }
      
      // 返回绑定对象，提供销毁方法
      return {
        destroyStoreBindings: function() {
          console.log('销毁MobX绑定');
        }
      };
    }
  };
}

// 导出模块
module.exports = {
  // 导出MobX绑定模块
  createStoreBindings: mobxBindings.createStoreBindings,
  // 添加更多npm包导出...
};

/**
 * 获取npm包路径 - 为了向后兼容
 * @param {string} packageName - 包名
 * @returns {string} npm包路径
 */
function getNpmPath(packageName) {
  return `../../../miniprogram_npm/${packageName}`;
}

exports.getNpmPath = getNpmPath; 